package thieft;

public class Tiempo {

	static private Tiempo unicaInstancia = null;
	private int tiempoEnHoras;
	private Dia dia;
	
    static public Tiempo obtenerInstancia() {
		
	    if (unicaInstancia == null)
	        unicaInstancia = new Tiempo(); 
	    
	    return unicaInstancia;
	}
    
    public void iniciarTiempo() {
    	// Inicia Lunes a las 7 hs
    	this.dia = Lunes.obtenerEstado();
    	this.tiempoEnHoras = 7; 
    }
        
    public int obtenerHoras() {
    	
    	return this.tiempoEnHoras;
    }
    
    public Dia obtenerDia() {
    	
    	return this.dia;
    }
    
    private void verificarCambioDeDia() {
    	
    	if ( this.tiempoEnHoras >= 24 ) {
    		
    		this.dia = this.dia.diaSiguiente();
    		
    		// Duerme 8 horas
    		this.tiempoEnHoras = this.tiempoEnHoras + 8;
    		
    		if ( !this.llegoAlLimite() ) {
    			this.tiempoEnHoras = this.tiempoEnHoras - 24;
    		}
    	}
    }
    
    public void pasaronHoras(int cantidadHoras) {
    	
    	this.tiempoEnHoras = this.tiempoEnHoras + cantidadHoras;
    	
    	this.verificarCambioDeDia();
    }
    
    public boolean llegoAlLimite() {
    	
    	return this.dia.llegoAlLimite(this.tiempoEnHoras);
    }
}
